/*
 * Copyright 2023-2085 xujin <ceo@itgrail.com>
 *
 * Licensed under the Grail License, Version 1.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * https://itgrail.com/docs?id=3&catalogId=87
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.itgrail.pilot.infrastructure.adapters;

import com.itgrail.pilot.domain.user.contant.OkrConstants;
import com.itgrail.pilot.domain.user.entity.DictDataE;
import com.itgrail.pilot.domain.user.ports.DictDataPort;
import com.itgrail.pilot.infrastructure.tunnel.db.dao.DictDataMapper;
import com.itgrail.pilot.infrastructure.tunnel.db.dataobject.DictDataDO;
import org.springframework.beans.factory.annotation.Autowired;
import com.itgrail.grail.ddd.annotation.infrastructure.Adapter;
import com.itgrail.grail.utils.reflect.BeanMapper;


@Adapter
public class DictDataAdapter implements DictDataPort {

    @Autowired
    private DictDataMapper dictDataMapper;

    @Override
    public void save(DictDataE dictDataE) {
        dictDataMapper.insert(BeanMapper.map(dictDataE, DictDataDO.class));
    }

    @Override
    public void update(DictDataE dictDataE) {
        DictDataDO dictDataDO = dictDataMapper.selectById(dictDataE.getId());
        dictDataDO.setDictCode(dictDataE.getDictCode());
        dictDataDO.setItemDesc(dictDataE.getItemDesc());
        dictDataDO.setItemName(dictDataE.getItemName());
        dictDataDO.setItemSort(dictDataE.getItemSort());
        dictDataDO.setItemValue(dictDataE.getItemValue());
        dictDataDO.setItemCode(dictDataE.getItemCode());
        dictDataMapper.updateById(dictDataDO);
    }

    @Override
    public void delete(DictDataE dictDataE) {
        DictDataDO dictDataDO = dictDataMapper.selectById(dictDataE.getId());
        dictDataDO.setIsDeleted(OkrConstants.DELETED);
        dictDataMapper.updateById(dictDataDO);
    }

    @Override
    public DictDataE findById(Long id) {
        DictDataDO dictDataDO = dictDataMapper.selectById(id);
        return BeanMapper.map(dictDataDO, DictDataE.class);

    }

    @Override
    public DictDataE findDictDataByDictCodeAndItemCode(String dictCode, String itemCode) {
        DictDataDO dictDataDO = dictDataMapper.findDictDataByDictCodeAndItemCode(dictCode, itemCode);
        return BeanMapper.map(dictDataDO, DictDataE.class);
    }

}
